package com.ebo.httpcall4j.core.processor;

import com.ebo.httpcall4j.core.model.HttpCallRequest;
import com.ebo.httpcall4j.core.model.HttpCallResponse;

/**
 * HTTP 调用处理器，用于在请求发送前和响应返回后进行自定义处理。
 */
public interface HttpCallProcessor {

    /**
     * 在HTTP请求发送前对请求进行处理。
     * <p>
     * 此方法可用于修改请求，例如添加认证头、签名等。
     *
     * @param request HttpCallRequest对象
     */
    default void beforeRequest(HttpCallRequest request) {
        // 默认不进行任何处理
    }

    /**
     * 在HTTP响应返回后对响应进行处理。
     * <p>
     * 此方法可用于解析响应体、记录日志等。
     *
     * @param response HttpCallResponse对象
     */
    default void afterResponse(HttpCallResponse response) {

    }

    /**
     * 判断HTTP响应是否表示业务成功。
     * <p>
     * 默认实现仅检查HTTP状态码是否为2xx。
     *
     * @param response HttpCallResponse对象
     * @return 如果响应表示业务成功，则返回true；否则返回false。
     */
    default boolean isSuccess(HttpCallResponse response) {
        return response.getStatusCode() >= 200 && response.getStatusCode() < 300;
    }
}